"""
三角形单词

三角形数序列的第n项tn可由公式n(n+1)/2得到；因此前十个三角形数是：
    1, 3, 6, 10, 15, 21, 28, 36, 45, 55, …
将一个单词中的每个字母分别转化为其在字母表中的顺序并相加，我们可以计算出一个单词的值。例如，单词SKY的值就是 19 + 11 + 25 = 55 = t10。
如果一个单词的值是一个三角形数，我们就称这个单词为三角形单词。
在文件words.txt 中包含有将近两千个常用英文单词，这其中有多少个三角形单词。

"""
def word_value(a):
    value=0
    for i in a:
        value=value+ord(i)-64
    return value

def triangle_num(n):
    n=n*2
    for i in range(1,n):
        if i*(i+1)==n:
            return True
        if i*(i+1)>n:
            return False

with open("/Users/fg/Desktop/python/python3欧拉计划/三角形单词.txt","r") as f:
    s=f.read()
    word=s.replace('"','').split(',')

cnt=0
for s in word:
    n=word_value(s)
    if triangle_num(n):
        cnt+=1
print(cnt)




# #读取文件
# with open(r'C:\Users\GWT9\Desktop\p042_words.txt')as an_file:
#     fan=an_file.read()
#     fan_an=fan.replace('"','').split(',')
# #判断是否为三角形数
# def an_trin(number):
#     sboot = int((2*number)**0.5)
#     if 2*number==sboot*(sboot+1):
#         return True
# #计算单词中字母对应的顺序之和
# def an_ord(str1):
#     return sum(ord(i)-64 for i in str1)
# fan=0
# for h in fan_an:
#     if an_trin(an_ord(h)):
#         fan+=1
# print(fan)
# 答案：162